package com.lvmama.service.rhino.searchanalysis;

import com.github.pagehelper.PageInfo;
import com.lvmama.common.result.Result;
import com.lvmama.pojo.dto.rhino.searchanalysis.*;
import com.lvmama.pojo.entity.rhino.searchanalysis.FlowSearchStation;

import java.util.List;

public interface FlowSearchService {
    /**
     * 获取查询时间内各渠道的搜索流量（柱状图）
     * @param queryParam
     * @return
     */
    Result<List<FlowSearchStatistics>> getSearchFlowByChannel(SearchStatisticsQuery queryParam);

    /**
     * 获取查询时间内流量趋势（折线图）
     * @param queryParam
     * @return
     */
    Result<List<FlowSearchStatistics>> getSearchFlowByDate(SearchStatisticsQuery queryParam);
    /**
     * 获取站点信息
     * @return
     */
    Result<List<FlowSearchStation>> getStations();
    /**
     * 获取关键字总pv量
     * @param queryParam
     * @return
     */
    Result<List<FlowSearchKeyType>> getKeyByType(SearchStatisticsQuery queryParam);
    /**
     * 获取关键字的日pv量
     * @param queryParam
     * @return
     */
    Result<List<FlowSearchKeyType>> getKeyByDate(SearchStatisticsQuery queryParam);
    /**
     * 获取关键字点击 各类型在时间段内 某站点 搜索次数  的景点信息
     * @param queryParam
     * @return
     */
    Result<PageInfo<FlowSearchKey>> getKeyByAmount(SearchStatisticsQuery queryParam);
    /**
     *  关键字详情（用户所在地区前十）
     * @param queryParam
     * @return
     */
    Result<List<FlowSearchKey>> getDetailByStation(SearchStatisticsQuery queryParam);
    /**
     * 关键字类型分布
     * @param queryParam
     * @return
     */
    Result<List<FlowSearchKey>> getDetailByType(SearchStatisticsQuery queryParam);
    /**
     * 关键词搜索到达品类分析
     * @param queryParam
     * @return
     */
    Result<List<FlowSearchArrivalKey>> getKeyByCategory(SearchStatisticsQuery queryParam);
    /**
     * 关键字到达品类分析 搜索词
     * @param queryParam
     * @return
     */
    Result<List<FlowSearchArrivalKey>> getKeyByKeyword(SearchStatisticsQuery queryParam);
    /**
     * 关键字到达品类分析 关键词
     * @param queryParam
     * @return
     */
    Result<List<FlowSearchArrivalKey>> getKeyByXgword(SearchStatisticsQuery queryParam);
    /**
     *  跳转分析 切换标签 切换跳转品类统计
     * @param queryParam
     * @return
     */
    Result<List<FlowSearchJump>> getSwitchByCategory(SearchStatisticsQuery queryParam);
    /**
     * 跳转分析 切换标签 切换跳转品类趋式
     * @param queryParam
     * @return
     */
    Result<List<FlowSearchJump>> getSwitchByDate(SearchStatisticsQuery queryParam);
    /**
     *  跳转分析 默认标签 跳转默认标签品类统计
     * @param queryParam
     * @return
     */
    Result<List<FlowSearchJump>> getJumpByCategory(SearchStatisticsQuery queryParam);
    /**
     * 跳转分析 默认标签 跳转默认品类趋式
     * @param queryParam
     * @return
     */
    Result<List<FlowSearchJump>> getJumpByDate(SearchStatisticsQuery queryParam);
    /**
     * 跳转分析 切换标签 图表详情
     * @param queryParam
     * @return
     */
    Result<List<FlowSearchJump>> getSwitchByResult(SearchStatisticsQuery queryParam);
    /**
     * 跳转分析 默认标签 图表详情
     * @param queryParam
     * @return
     */
    Result<List<FlowSearchJump>> getMoJumpByResult(SearchStatisticsQuery queryParam);
    /**
     * 搜索结果分析 品类搜索无结果统计
     * @param queryParam
     * @return
     */
    Result<List<FlowSearchResult>> getResultByCategory(SearchStatisticsQuery queryParam);
    /**
     * 搜索结果分析 品类搜索无结果趋式
     * @param queryParam
     * @return
     */
    Result<List<FlowSearchResult>> getResultByDate(SearchStatisticsQuery queryParam);
    /**
     * 搜索结果分析 柱状图详情
     * @param queryParam
     * @return
     */
    Result<PageInfo<FlowSearchResult>> getResultByKey(SearchStatisticsQuery queryParam);
    /**
     * 筛选分析
     * @param queryParam
     * @return
     */
    Result<List<FlowSearchFilter>> getFilterList(SearchStatisticsQuery queryParam);
    /**
     * 筛选条件的code名称
     * @param queryParam
     * @return
     */
    Result<FlowSearchFilterCondition> getFilterNameByCode(FlowSearchFilterCondition queryParam);
    /**
     * 筛选条件插入表中
     * @param queryParam
     * @return
     */
    boolean insertFilter(FlowSearchFilterCondition queryParam);
    /**
     * 翻页分析
     * @param queryParam
     * @return
     */
    Result<List<FlowSearchPaging>> getPagingByCategory(SearchStatisticsQuery queryParam);
    /**
     * 翻页分析 翻页数统计
     * @param queryParam
     * @return
     */
    Result<List<FlowSearchPaging>> getPagingByPageCode(SearchStatisticsQuery queryParam);
}
